package com.brillilab.service.core.comments;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.brillilab.common.entity.PageVo;
import com.brillilab.domain.po.comments.ChatMessage;
import com.brillilab.domain.vo.comments.ChatClassifySearchVo;
import com.brillilab.domain.vo.comments.ChatContentSearchVo;
import com.brillilab.domain.vo.comments.ChatFileSearchVo;
import com.brillilab.domain.vo.comments.ChatSearchClassifyVo;
import com.brillilab.domain.vo.comments.ChatSearchFileVo;

/**
* 评论信息
* @author 
* @date 2019/12/03
*/
public interface IChatMessageService  extends IService<ChatMessage> {

	/**
	 * 获取成员与成员间最新一条聊天消息
	 * @param meMemberId 自己
	 * @param otherMemberId 他人
	 * @return
	 */
	ChatMessage getNewestOneMessage(Long meMemberId, Long otherMemberId);

	/**
	 * 获取历史消息
	 * 
	 * @param meMemberId     自己
	 * @param otherMemberId   他人
	 * @param startMessageId 起始消息ID(获取该消息ID之前的消息)
	 * @return
	 */
	List<ChatMessage> historyMessage(Long meMemberId, Long otherMemberId, Long startMessageId);

	/**
	 * 获取最新消息
	 * 
	 * @param meMemberId     自己
	 * @param otherMemberId   他人
	 * @param startMessageId 起始消息ID(获取该消息ID之后的消息)
	 * @return
	 */
	List<ChatMessage> newestMessage(Long meMemberId, Long otherMemberId, Long startMessageId);

	/**
	 * 把消息设为已读
	 * @param toMemberId
	 * @param classify
	 * @param classifyId
	 */
	void setMessageRead(Long toMemberId, Integer classify, Long classifyId);

	/**
	 * 把聊天消息相关的评论标记为评论已删除
	 * @param commentId
	 */
	void setCommentsDelete(Long commentId);

	/**
	 * 设置全部消息已读
	 * @param meMemberId     自己
	 * @param otherMemberId   他人
	 */
	void setAllMessageRead(Long meMemberId, Long otherMemberId);

	/**
	 *  搜索聊天消息
	 * @param searchVo
	 * @return
	 */
	PageVo<ChatMessage> searchContent(ChatContentSearchVo searchVo);

	/**
	 *  搜索图片列表
	 * @param searchVo
	 * @return
	 */
	List<ChatSearchFileVo> searchPicture(ChatFileSearchVo searchVo);

	/**
	 * 查询未读数
	 * @param meMemberId
	 * @param otherMemberId
	 * @return
	 */
	int noReadNum(Long meMemberId, Long otherMemberId);

	/**
	 * 查找聊天分类记录
	 * 
	 * @return
	 */
	PageVo<ChatSearchClassifyVo> searchClassify(ChatClassifySearchVo searchVo);

	/**
	 * 获取未读聊天评论
	 * @param fromMemberIds
	 * @param toMemberId
	 * @return
	 */
	List<ChatMessage> getCommentsGuideList(List<Long> fromMemberIds, Long toMemberId);

	/**
	 * 获取未读聊天卡片信息
	 * @param fromMemberIds
	 * @param toMemberId
	 * @return
	 */
	List<ChatMessage> getNoReadCard(List<Long> fromMemberIds, Long toMemberId);

}
